package join.model.beans;

import java.util.Date;

import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Lob;
import javax.persistence.Table;

import join.util.AppListUtil;
import join.util.RepositoryUtil;

@Entity
@Table(name="proceso_documento", schema=RepositoryUtil.ESQUEMA_NOMBRE)
public class ProcesoDocumento {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name ="id", nullable=false)
	private Long id;
	@Column(name ="tipo", nullable=false)
	private Long tipo;
	@Column(name ="referencia", nullable=false)
	private String referencia;
	@Column(name ="referencia_codigo", nullable=false)
	private Long referenciaCodigo;
	@Column(name ="archivo", nullable=true)
	private String archivo;
	@Column(name ="radicado", nullable=true)
	private String radicado;
	@Column(name ="registro", nullable=false)
	private Date registro;
	@Column(name ="ult_modificacion", nullable=false)
	private Date ultModificacion;
	@Column(name ="usuario", nullable=false)
	private String usuario;
	@Column(name ="estado", nullable=false)
	private String estado;
	
	@Basic (fetch=FetchType.LAZY)
	@Lob @Column(name ="documento", nullable=true)
	private byte[] documento;
	
	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}
	/**
	 * @param id the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}
	/**
	 * @return the tipo
	 */
	public Long getTipo() {
		return tipo;
	}
	/**
	 * @param tipo the tipo to set
	 */
	public void setTipo(Long tipo) {
		this.tipo = tipo;
	}
	/**
	 * @return the archivo
	 */
	public String getArchivo() {
		return archivo;
	}
	/**
	 * @param archivo the archivo to set
	 */
	public void setArchivo(String archivo) {
		this.archivo = archivo;
	}
	/**
	 * @return the radicado
	 */
	public String getRadicado() {
		return radicado;
	}
	/**
	 * @param radicado the radicado to set
	 */
	public void setRadicado(String radicado) {
		this.radicado = radicado;
	}
	/**
	 * @return the registro
	 */
	public Date getRegistro() {
		return registro;
	}
	/**
	 * @param registro the registro to set
	 */
	public void setRegistro(Date registro) {
		this.registro = registro;
	}
	/**
	 * @return the ultModificacion
	 */
	public Date getUltModificacion() {
		return ultModificacion;
	}
	/**
	 * @param ultModificacion the ultModificacion to set
	 */
	public void setUltModificacion(Date ultModificacion) {
		this.ultModificacion = ultModificacion;
	}
	/**
	 * @return the usuario
	 */
	public String getUsuario() {
		return usuario;
	}
	/**
	 * @param usuario the usuario to set
	 */
	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}
	/**
	 * @return the estado
	 */
	public String getEstado() {
		return estado;
	}
	/**
	 * @param estado the estado to set
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}
	/**
	 * @return the referencia
	 */
	public String getReferencia() {
		return referencia;
	}
	/**
	 * @param referencia the referencia to set
	 */
	public void setReferencia(String referencia) {
		this.referencia = referencia;
	}
	/**
	 * @return the referenciaCodigo
	 */
	public Long getReferenciaCodigo() {
		return referenciaCodigo;
	}
	/**
	 * @param referenciaCodigo the referenciaCodigo to set
	 */
	public void setReferenciaCodigo(Long referenciaCodigo) {
		this.referenciaCodigo = referenciaCodigo;
	}

	/**
	 * Nombre del estado
	 * @return
	 */
	public String getEstadoNombre (){
		return AppListUtil.listaProcesoTexto("procesoDocumentoEstado", getEstado());
	}
	/**
	 * @return the documento
	 */
	public byte[] getDocumento() {
		return documento;
	}
	/**
	 * @param documento the documento to set
	 */
	public void setDocumento(byte[] documento) {
		this.documento = documento;
	}
	
	/**
	 * Nombre del estado
	 * @return
	 */
	public String getTipoNombre (){
		if (getTipo()!=null) return AppListUtil.listaProcesoTexto("procesoDocumentoTipo", getTipo().toString());
		else return "";
	}
}